#pragma once

#include "Actor.h"
#include "BoundingFrustum.h"

#define CAMERA_DEFAULT_FIELDOFVIEW			85.0f
#define CAMERA_DEFAULT_NEARPLANEDISTANCE	1.0f
#define	CAMERA_DEFAULT_FARPLANEDISTANCE		8192.0f

class Camera : public Actor
{
protected:
	Camera();
public:
	virtual ~Camera();
public:
	const float				GetFieldOfView() const;
	const float				GetNearPlaneDistance() const;
	const float				GetFarPlaneDistance() const;
	const BoundingFrustum	GetBoundingFrustum() const;
public:
	void					SetFieldOfView(float fieldOfView);
	void					SetNearPlaneDistance(float nearPlaneDistance);
	void					SetFarPlaneDistance(float farPlaneDistance);
	void					SetBoundingFrustum(const BoundingFrustum& boundingFrustum);
public:
	virtual void			Update(float elapsedTime);
private:
	float					m_fFieldOfView;
	float					m_fNearPlaneDistance;
	float					m_fFarPlaneDistance;
	BoundingFrustum			m_oBoundingFrustum;
};